package com.alander.nexusgo.user.service;

import com.alander.nexusgo.user.model.entity.UserFollows;
import com.baomidou.mybatisplus.extension.service.IService;
import java.util.List;

/**
 * @author alander
 */
public interface UserFollowsService extends IService<UserFollows> {
    /**
     * 关注用户
     * @param followerId 关注者ID
     * @param followedId 被关注者ID
     * @return 是否关注成功
     */
    boolean followUser(Long followerId, Long followedId);

    /**
     * 取消关注
     * @param followerId 关注者ID
     * @param followedId 被关注者ID
     * @return 是否取消成功
     */
    boolean unfollowUser(Long followerId, Long followedId);

    /**
     * 检查是否已关注
     * @param followerId 关注者ID
     * @param followedId 被关注者ID
     * @return 是否已关注
     */
    boolean isFollowing(Long followerId, Long followedId);

    /**
     * 获取用户的关注列表
     * @param followerId 用户ID
     * @return 关注列表
     */
    List<Long> getFollowingList(Long followerId);

    /**
     * 获取用户的粉丝列表
     * @param followedId 用户ID
     * @return 粉丝列表
     */
    List<UserFollows> getFollowersList(Long followedId);

    /**
     * 获取关注数量
     * @param userId 用户ID
     * @return 关注数量
     */
    long getFollowingCount(Long userId);

    /**
     * 获取粉丝数量
     * @param userId 用户ID
     * @return 粉丝数量
     */
    long getFollowersCount(Long userId);
}
